﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;
using Model;

namespace TanHungLong
{
    public partial class FrmTHPhieuNhap : DevExpress.XtraEditors.XtraForm
    {
        #region variant
        private bool allowCloseForm = true;
        string NhaCungCap = "";
        string TuNgay = "";
        string TrangThaiThanhToan = "";
        string TinhTrangNhapKho = "";
        private MatHangBOCollection matHangBOCollection = null;
        private PhieuNhapBOCollection PhieuNhapBOCollection = PhieuNhapBOCollection.NewPhieuNhapBOCollection();
        private PhieuNhapChiTietBOCollection PhieuNhapChiTietBOCollection = PhieuNhapChiTietBOCollection.NewPhieuNhapChiTietBOCollection();
        private PhieuNhapBO PhieuNhapBO = PhieuNhapBO.NewRootPhieuNhapBO();

        #endregion variant

        //=====================================
        #region form
        public FrmTHPhieuNhap()
        {
            InitializeComponent();
            this.KeyPreview = true;

            this.Load += new EventHandler(FrmTHPhieuNhap_Load);
            this.FormClosing += new FormClosingEventHandler(FrmTHPhieuNhap_FormClosing);
            this.btnHuy.Click += new EventHandler(btnHuy_Click);
            this.btnTimKiem.Click += new EventHandler(btnTimKiem_Click);
            this.btnClose.Click += new EventHandler(btnClose_Click);
            this.btnInChiTiet.Click += new EventHandler(this.btnInChiTiet_Click);
        }

        private void FrmTHPhieuNhap_Load(object sender, EventArgs e)
        {
            RefreshData();
            //SetFormStatus(this.formStatus);


            Utility.InitControl(this.lookUpEditNhaCungCap);

            Utility.InitControl(this.reLookUpNhaCungCapID);


        }

        private void FrmTHPhieuNhap_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.allowCloseForm == false)
                e.Cancel = true;
        }

        #endregion form

        //=====================================
        #region control

        #endregion control

        //=====================================
        #region button
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            RefreshData();
        }


        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        #endregion button

        //=====================================
        #region grid

        private void grdView_ShowingEditor(object sender, CancelEventArgs e)
        {
            GridView grdView = (GridView)sender;

            bool del = StaticUtil.GetBool(grdView.GetFocusedRowCellValue("DELE"));
            string fieldName = grdView.FocusedColumn.FieldName;

            if (del && fieldName != "DELE")
                e.Cancel = true;
            else
                if (fieldName == "DELE" && grdView.FocusedRowHandle == GridControl.NewItemRowHandle)
                    e.Cancel = true;
        }

        #endregion grid

        //=====================================
        #region function
        private void ResetData()
        {
            lookUpEditNhaCungCap.EditValue = null;
            this.PhieuNhapBO = Model.PhieuNhapBO.NewRootPhieuNhapBO();
            this.PhieuNhapChiTietBOCollection = Model.PhieuNhapChiTietBOCollection.NewPhieuNhapChiTietBOCollection();
        }

        private void RefreshData()
        {
            ResetData();
            #region

            KhachHangBOList NhaCungCapBOList = KhachHangBOList.GetKhachHangBOList();
            Utility.SetData(this.reLookUpNhaCungCapID, NhaCungCapBOList, NhaCungCapBOList.Count);
            Utility.SetData(this.lookUpEditNhaCungCap, NhaCungCapBOList, NhaCungCapBOList.Count);

            dateEditTungay.DateTime = dateEditDenngay.DateTime = DateTime.Now;
            #endregion BOList
            this.PhieuNhapBOCollection = Model.PhieuNhapBOCollection.NewPhieuNhapBOCollection();

            this.bdSourcePhieuNhap.DataSource = this.PhieuNhapBOCollection.Clone();
        }

        #endregion function


        private void btnTimKiem_Click(object sender, EventArgs e)
        {

            string strWhere = "MaSo like '%" + txtMaSo.Text.Trim() + "%' ";
            if (checkCongNo.Checked)
                if (checkThanhToan.Checked)
                {
                    strWhere = strWhere + "and ThanhToan = 1";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Đã Thanh toán (thanh toán đủ,công nợ)";
                }
                else
                {
                    strWhere = strWhere + "and ThanhToan = 1 and TinhTrangThanhToan < 0";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Hóa đơn công nợ";
                }
            else
                if (checkThanhToan.Checked)
                {
                    strWhere = strWhere + "and ThanhToan = 1 and TinhTrangThanhToan > 0";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Hóa đơn đã thanh toán đủ";
                }
                else
                {
                    strWhere = strWhere + "and ThanhToan = 0 and TinhTrangThanhToan = 0";
                    TrangThaiThanhToan = "Trạng thái Hóa đơn: Tất cả các hóa đơn (Chưa thanh toán, thanh toán đủ, công nợ)";
                }

            if (checkNgay.Checked)
            {
                strWhere = strWhere + " and (convert(nvarchar,NgayLapHoaDon,111) >= '" + dateEditTungay.DateTime.ToString("yyyy/MM/dd") + "') and (convert(nvarchar,NgayLapHoaDon,111) <= '" + dateEditDenngay.DateTime.ToString("yyyy/MM/dd") + "')";
                TuNgay = "Ngày lập Hóa đơn: Từ ngày " + dateEditTungay.DateTime.ToString("dd/MM/yyyy") + " Đến ngày " + dateEditDenngay.DateTime.ToString("dd/MM/yyyy");
            }
            else
                TuNgay = "Ngày lập Hóa đơn: Tất cả các ngày ";


            if (checkNhapKho.Checked)
            {
                strWhere = strWhere + "and TinhTrangXuatKho = 1 ";
                //TuNgay = "Tình trạng nhập kho: Đã nhập vào kho";
            }
            else
            {
                strWhere = strWhere + "and TinhTrangXuatKho = 0 ";
                //TuNgay = "Tình trạng nhập kho: Phiếu nhập đang xử lý, Chưa nhập vào kho";
            }


            if (checkNhaCungCap.Checked)
                if (lookUpEditNhaCungCap.EditValue != null)
                {
                    strWhere = strWhere + " and NhaCungCapID = " + lookUpEditNhaCungCap.EditValue.ToString();
                    NhaCungCap = "Nhà cung cấp: " + lookUpEditNhaCungCap.Text.ToString();
                }
                else
                    NhaCungCap = "Nhà cung cấp: Tất cả Nhà cung cấp";
            else
                NhaCungCap = "Nhà cung cấp: Tất cả Nhà cung cấp";

            timKiem(strWhere);
        }


        private void timKiem(string strwhere)
        {

            PhieuNhapBOCollection = Model.PhieuNhapBOCollection.GetPhieuNhapBOCollection(strwhere, "PhieuNhapID", "DESC");
            this.bdSourcePhieuNhap.DataSource = this.PhieuNhapBOCollection.Clone();

            //tinhtien();
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            RefreshData();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {

            RPhieuNhapBOCollection rPhieuNhapBOColecction = RPhieuNhapBOCollection.NewRPhieuNhapBOCollection();
            int rowcount = PhieuNhapBOCollection.Count;
            if (rowcount > 0)
                for (int i = 0; i < rowcount; i++)
                {
                    RPhieuNhapBO rPhieuNhapBO = RPhieuNhapBO.NewRootRPhieuNhapBO();
                    rPhieuNhapBO.CopyFromRPhieuNhapBO(PhieuNhapBOCollection[i]);
                    rPhieuNhapBO.STT0 = i + 1;
                    rPhieuNhapBOColecction.Add(rPhieuNhapBO);
                }

            Report.rpTongHopPhieuNhap rTongHopPhieuNhap = new TanHungLong.Report.rpTongHopPhieuNhap(TinhTrangNhapKho, TuNgay, NhaCungCap, TrangThaiThanhToan, rPhieuNhapBOColecction);
            rTongHopPhieuNhap.ShowPreviewDialog();
        }

        private void btnInChiTiet_Click(object sender, EventArgs e)
        {

            int PhieuNhapID = StaticUtil.GetInt(gridViewPhieuNhap.GetFocusedRowCellValue("PhieuNhapID"), -1);
            if (PhieuNhapID >= 0)
            {
                this.PhieuNhapBO = Model.PhieuNhapBO.GetRootPhieuNhapBO(PhieuNhapID);
                this.PhieuNhapChiTietBOCollection = Model.PhieuNhapChiTietBOCollection.GetPhieuNhapChiTietBOCollection("PhieuNhapID = " + PhieuNhapID.ToString());

                //RPhieuNhapBO rPhieuNhapBO = RPhieuNhapBO.NewRootRPhieuNhapBO();
                //rPhieuNhapBO.CopyFromRPhieuNhapBO(PhieuNhapBO);
                //Report.rpPhieuNhapKho rPhieuNhapHang = new TanHungLong.Report.rpPhieuNhapKho();
                //rPhieuNhapHang.SetReportData(rPhieuNhapBO, PhieuNhapChiTietBOCollection);
                //rPhieuNhapHang.ShowPreviewDialog();

                FrmPhieuNhapChiTiet frm = new FrmPhieuNhapChiTiet(this.PhieuNhapBO, this.PhieuNhapChiTietBOCollection);
                frm.ShowDialog();

            }
            else
                MessageBox.Show("Chưa chọn Phiếu nhập hàng??", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }


    }
}